load "FiberProductsData.m";

j1:=Groups["2Cs"]`jmap;
j2:=Groups["3Ns"]`jmap;

assert j1 eq (2^8*(1+t+t^2)^3)/(t^2*(1+t)^2);
assert j2 eq 3^3*((-3+t)^3*(1+t)^3)/t^3;


// Fiber product of [ 2Cs, 3Ns ] is 2*t^2*(1+t)^2 = z^3

A2<t,z>:=AffineSpace(Rationals(),2);
j1:=(2^8*(1+t+t^2)^3)/(t^2*(1+t)^2);
C:=Curve(A2,2*t^2*(1+t)^2 - z^3);
C:=ProjectiveClosure(C);                                                     
assert Genus(C) eq 1;
Pt:=PointSearch(C,100)[1];
E,mp1:=EllipticCurve(C,Pt);  
assert CremonaReference(E) eq "36a1";
E,mp1 := EllipticCurve(C,Pt);
MW:=AbelianInvariants(MordellWeilGroup(E));
T,mp2 := TorsionSubgroup(E);
rE:=Rank(E);
assert rE eq 0;
assert MW eq [ 6 ];
PtsC := { };
for p in T do
	PtsC := PtsC join RationalPoints(mp2(p) @@ mp1);
end for;
assert PtsC eq {C![1,2],C![-2,2],C![-1/2,1/2],C![0,0],C![-1,0],C![0,1,0]};
js := {Evaluate(j1,[P[1]/P[3],1]) : P in PtsC | Evaluate(Denominator(j1),[P[1],1]) ne 0 and P[3] ne 0};
assert js eq {1728};
jCM:={0,1728,2^4*3^3*5^3,2^3*3^3*11^3,-3^3*5^3,3^3*5^3*17^3,2^6*5^3,-2^(15)*3*5^3,-2^(15),-2^(15)*3^3,-2^(18)*3^3*5^3,-2^(15)*3^3*5^3*11^3,-2^(18)*3^3*5^3*23^3*29^3};
assert #(js diff jCM) eq 0;
print "[ 2Cs, 3Ns ] NO non-cuspidal, non-CM points";